package com.sxj.corejava.code11_IO.字节流;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

/**
 * @author 石小俊
 * 2024年07月29日 14:23
 */
public class Test04_字节数组输入输出流 {

    public static void main(String[] args) {
        test02();
    }

    public static void test01() {
        byte[] data = "Hello World 你好 世界".getBytes();
        try (
                // 字节数组输入流:从指定的字节数组中读取数据
                InputStream in = new ByteArrayInputStream(data);
        ) {


            // 用于每次读取多个字节
            byte[] b = new byte[1024];
            int i = -1;
            while ((i = in.read(b)) != -1) {
                System.out.print(new String(b, 0, i));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void test02() {
        try (
                ByteArrayOutputStream out = new ByteArrayOutputStream();
        ) {
            // 将数据写入到内置的字节数组中
            // 将数据写入到缓冲区
            out.write("Hello World".getBytes());
            // 将缓冲区的数据写入到目的地
            out.flush();

            // 创建一个新分配的 byte 数组
            // 获取内置的byte数组
            byte[] data = out.toByteArray();
            System.out.println(Arrays.toString(data));
            System.out.println(new String(data));
            System.out.println(out.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
